This invention relates to computing and communications on a computer network. More specifically, this invention relates to a computerized system and an associated method for optimally controlling storage and transfer of computer programs between computers on a network to facilitate interactive program usage.
In the past several years, there has been an ever increasing number of individuals, corporations and other legal entities which have obtained access to the global network of computers known as the Internet. More precisely described, the Internet is a network of regional computer networks scattered throughout the world. On any given day, the Internet connects roughly 20.sup.2 million users in over 50 countries. That number will continue to increase annually for the foreseeable future.
The Internet has provided a means for enabling individual access to enormous amounts of information in several forms including text, video, graphics and sound. This multi-media agglomeration or abstract space of information is generally referred to as the "World-Wide Web," which is technically a "wide-area hypermedia information retrieval initiative aiming to give universal access to a large universe of documents." To obtain access to the World-Wide Web, a computer operator uses software called a browser. The most popular browsers in the United States are Netscape Navigator and Microsoft's Internet Explorer.
The operation of the Web relies on so-called hypertext for enabling user interaction. Hypertext is basically the same as regular text in that it may be stored, read, searched and edited, with one important exception: a hypertext document contains links to other documents. For instance, selecting the word "hypertext" in a first document could call up secondary documents to the user's computer screen, including, for example, a dictionary definition of "hypertext" or a history of hypertext. These secondary documents would in turn include connections to other documents so that continually selecting terms in one documents after another would lead the user in a free-associative tour of information. In this way, hypertext links or "hyperlinks" can create a complex virtual web of connections.
Hypermedia include hypertext documents which contain links not only to other pieces of text, but also to other media such as sounds, images and video. Images themselves can be selected to link to sound or documents.
The standard language the Web uses to create and recognize hypermedia documents is the HyperText Markup ("HTML") Language. This language is loosely related to, but technically not a subset of, the Standard Generalized Markup Language ("SGML"), a document formatting language used widely in some computing circles. Web documents are typically written in HTML and are nothing more than standard text files with formatting codes that contain information about layout (text styles, document titles, paragraphs, lists) and hyperlinks.
HTML is limited to display functions (text, animation, graphics, and audio) and form submission. Inherent in the basic HTML protocol (set of software-encoded rules governing the format of messages that are exchanged between computers) are design limitations that prevent the implementation of the type of program functionality that is commonly used in today's desktop computers. Because of this limitation, it is impossible to enhance HTML documents with the features necessary to support the Internet applications currently being sought by industry and consumers.
Sun Microsystems and Netscape Communications have attempted to introduce additional program functionality through the implementation of Sun's Java programming language as a browser plug-in. Microsoft, in addition to supporting Java, has introduced Active-X as a browser plug-in. Currently, after two years of development, both Java and Active-X are still failing to deliver working software. These languages are plagued by software errors that crash the newer operating systems. Even the developers of these languages, Sun and Microsoft, are having major problems with Java and Active-X applications that they have written to demonstrate the capabilities of the languages.
Java, Active-X and almost all other programming languages use a programming paradigm based on the "C" programming language introduced by AT&T in the 1970's to develop the UNIX operating system. Although well suited for operating system development, "C" has two major drawbacks for Internet content delivery. The first drawback is that an entire program must be loaded before anything can be executed using the program. Because Internet content is open-ended, most applications can become very large, making downloading impractical due to the limited bandwidth of most Internet connections. Typical Java and Active-X applications take several minutes to download before they start running. The second drawback using programs based in "C" is that content development is very inefficient. "C" and programming languages based on the "C" paradigm are currently used to produce software tools and utilities such as word processors, spreadsheets, and operating systems. Software developers can assign a large number of programmers to a long-term project, with the knowledge that repeated sales of the product to existing users will recover the large investment expenditure. However, developers of Internet content cannot afford this type of approach and have fallen back upon the very simple HTML protocol to economize development.
However, even HTML is inadequate to enable or facilitate the conducting of interactive programming on the Internet. Although well adapted to passively providing multimedia information, HTML is extremely limited in active and interactive software use and development. Thus, companies seeking to conduct commercial activities on the Internet are seeking a programming tool or information-exchange methodology to replace HTML or to provide major enhancement to that language. In contrast to applications programs based on the "C" paradigm, Internet applications programming is generally not subject to multiple uses. Rather an Internet program is consumed: the program is used only once by the typical user. Utilities-type software developed for individual computer use, such as word processors, spread sheets, E-mail, etc., can be sold at higher prices because the software is used again and again by any individual.
Programming languages based on the "C" programming paradigm are awkward for programming interactions involving the computer's display screen. For example, a Microsoft program for the manipulation of sprites (graphic images that can move over a background and other graphic objects in a nondestructive manner) requires over 800 lines of "C" code and over 290 lines of assembler code. The same program written in the TenCORE language requires only six lines.
TenCORE is a modular programming language designed in the early 1980's to facilitate the transfer of information between disk drives and RAM, particularly for the delivery of interactive instruction ("Computer-Based Training"). At that time, disk drives were all slow and RAM was inevitably small. In adapting to these hardware limitations, TenCORE introduced the use of small individual code modules for performing respective functions, thereby enabling efficient performance as each code module loaded a single interaction from the slow disk drives. Programming in the form of substantially independent code modules is open-ended, a necessary characteristic for educational software requiring the delivery of whatever remedial instruction is required by the individual student TenCORE utilizes a program called an "interpreter" that implements all basic required functions efficiently. The interpreter has no content itself. The content comes from an unlimited number of small pseudocode modules which are loaded into the system memory and issue commands to the interpreter. In writing a program, the programmer's involvement is reduced to simply issuing commands, leaving all the difficulties of implementation to the interpreter.
In contrast to TenCORE, "C" type programming includes a series of pre-written code libraries which are linked together as they are compiled. In theory, when a new microprocessor is designed, only the code libraries need to be rewritten and then all programs can be re-compiled using the new libraries. However, over the past twenty years the number of these code libraries has grown to a point where the original concept of rewriting for different microprocessors is no longer practical because of the difficulty in compensating for subtle differences between microprocessors. What remains is a complex and difficult programming syntax that takes years to master and is very difficult to debug.